"""
4.2.3_通过rollback()方法执行数据回滚
"""
import pymysql
# 创建数据库对象
db = pymysql.connect(
    host = '127.0.0.1',
    user = 'root',
    password = '123456',
    port = 3306,
    database = 'zrlog',   # 要操作的数据库名
    charset = 'utf8'
)
# 创建SQL游标对象，游标对象主要用来执行SQL语句
cursor = db.cursor()
"""
sql1可以正常执行，因为主键列logId=8，其值不重复；
sql2不能正常执行，因为主键列logId=3，其值重复
"""
sql1 = 'insert into log set logId=8,title="8888",alias="8888",content="8888"'
sql2 = 'insert into log set logId=3,title="3333",alias="3333",content="3333"'
# 加入try和except异常检测机制
try:
    # 执行sql1语句
    cursor.execute(sql1)
    # 执行sql2语句
    cursor.execute(sql2)
    # 数据提交
    db.commit()
except:
    """
    若sql1和sql2任意语句执行异常，则结果统一撤回（回滚）
    若sql1语句执行正常，sql2语句执行异常，sql1执行的结果也不会记录到数据库中
    """
    db.rollback()
# 关闭游标
cursor.close()
# 关闭数据库
db.close()


